package unit3;

public class DemoStaticVar1 {
    int nonStaticVar = 10; // 非静态变量
    static int staticVar = 20; // 静态变量

    static {
        System.out.println("静态代码块");
        staticVar = 25; // 可以引用和修改静态变量
//        nonStaticVar = 15; // 错误，不能从静态上下文中引用非静态变量
    }

    static void StaticMethod() {
        System.out.println("静态方法");
//        nonStaticVar = 30; // 错误，不能从静态上下文中引用非静态变量
        DemoStaticVar1 obj = new DemoStaticVar1();
        obj.nonStaticVar = 30; // 正确，通过对象引用非静态变量
        staticVar = 40; // 正确，可以引用静态变量
    }

    void nonStaticMethod() {
        System.out.println("非静态方法");
        nonStaticVar = 50; // 正确，可以引用非静态变量
        staticVar = 60; // 正确，可以引用静态变量
    }

    public static void main(String[] args) {
//        nonStaticMethod(); // 错误，不能从静态上下文中引用非静态方法
        StaticMethod();
    }
}
